import time

from selenium import webdriver
from selenium.webdriver import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.service import Service
import unittest
from selenium.webdriver.common.action_chains import ActionChains


class MyTestCase(unittest.TestCase):
    driver = None

    @classmethod
    def setUpClass(cls) -> None:
        service = Service(executable_path="../driver/geckodriver.exe")
        cls.driver = webdriver.Firefox(service=service)

    def test_find_element(self):
        """
        测试八种元素定位方式：id、name、classname
        :return:
        """
        self.driver.get("http://127.0.0.1:8080/testhtml/exam/House.html")
        # 使用 Name 定位方式 来进行 元素定位
        text = self.driver.find_element(By.NAME, "username")
        text.clear()  # 清空
        text.send_keys('hanamaki')

        time.sleep(2)
        # 使用 className 定位方式 来进行 元素定位
        text = self.driver.find_element(By.CLASS_NAME, "uname")
        text.clear()  # 清空
        text.send_keys('andy')

        # 使用 id 定位方式 来进行 元素定位
        text = self.driver.find_element(By.ID, "email")
        text.clear()  # 清空
        text.send_keys('123@qq.com')

        # 如果 想要 对 网页中 的 文本框进行 双击操作 需要导入模块
        wymc = self.driver.find_element(By.XPATH, "//td/input[@class='uname']")
        ActionChains(self.driver, 300).double_click(wymc).perform()

    @classmethod
    def tearDownClass(cls) -> None:
        # cls.driver.close()
        # cls.driver.quit()
        pass


if __name__ == '__main__':
    unittest.main()
